///import core
///import uicore
(function () {
    var utils = baidu.editor.utils,
        Stateful = baidu.editor.ui.Stateful,
        uiUtils = baidu.editor.ui.uiUtils,
        UIBase = baidu.editor.ui.UIBase;

    var PastePicker = (baidu.editor.ui.PastePicker = function (options) {
        this.initOptions(options);
        this.initPastePicker();
    });
    PastePicker.prototype = {
        initPastePicker: function () {
            this.initUIBase();
            this.Stateful_init();
        },
        getHtmlTpl: function () {
            return (
                '<div class="edui-pasteicon" onclick="$$._onClick(this)"></div>' +
                '<div class="edui-pastecontainer">' +
                '<div class="edui-title">' +
                this.editor.getLang("pasteOpt") +
                "</div>" +
                '<div class="edui-button">' +
                '<div title="' +
                this.editor.getLang("pasteSourceFormat") +
                '" onclick="$$.format(false)" stateful>' +
                '<div class="edui-richtxticon"></div></div>' +
                '<div title="' +
                this.editor.getLang("tagFormat") +
                '" onclick="$$.format(2)" stateful>' +
                '<div class="edui-tagicon"></div></div>' +
                '<div title="' +
                this.editor.getLang("pasteTextFormat") +
                '" onclick="$$.format(true)" stateful>' +
                '<div class="edui-plaintxticon"></div></div>' +
                "</div>" +
                "</div>" +
                "</div>"
            );
        },
        getStateDom: function () {
            return this.target;
        },
        format: function (param) {
            this.editor.ui._isTransfer = true;
            this.editor.fireEvent("pasteTransfer", param);
        },
        _onClick: function (cur) {
            var node = domUtils.getNextDomNode(cur),
                screenHt = uiUtils.getViewportRect().height,
                subPop = uiUtils.getClientRect(node);

            if (subPop.top + subPop.height > screenHt)
                node.style.top = -subPop.height - cur.offsetHeight + "px";
            else node.style.top = "";

            if (/hidden/gi.test(domUtils.getComputedStyle(node, "visibility"))) {
                node.style.visibility = "visible";
                domUtils.addClass(cur, "edui-state-opened");
            } else {
                node.style.visibility = "hidden";
                domUtils.removeClasses(cur, "edui-state-opened");
            }
        },
        _UIBase_render: UIBase.prototype.render
    };
    utils.inherits(PastePicker, UIBase);
    utils.extend(PastePicker.prototype, Stateful, true);
})();
